﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Reflection;

/// <summary>
/// Summary description for ControladorEditarProyecto
/// </summary>
public class ControladorEditarProyecto
{

    private static String dataMsg;
    private static String opMsg;
    private static String errorCode;
    
    public ControladorEditarProyecto()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public String getDataMsg()
    {
        return dataMsg;
    }

    public String getOpMsg()
    {
        return opMsg;
    }

    public String getErrorCode()
    {
        return errorCode;
    }

    public void cargaInicial(String idProyecto , TextBox error, Button b , TextBox nombre, TextBox descripcion )
    { 
        ModeloEditarProyecto model = new ModeloEditarProyecto();
        DataTable dt = model.getDatosProyecto(idProyecto);
        if (dt == null || dt.Rows.Count == 0)
        {
            dataMsg = "Ocurri&oacute; un error al conectarse con la base de datos. Intente m&aacute;s tarde";
            error.Text = "1";
            opMsg = "";
            b.Enabled = false;
            return;
        }
        else
        {
            nombre.Text = dt.Rows[0]["nombreProyecto"].ToString();
            descripcion.Text = dt.Rows[0]["descripcionProyecto"].ToString();
            opMsg = "";
            return;

        }
    }

    public void editarProyecto(String idProyecto, String nombreProyecto, String descripcionProyecto , TextBox error, Button b, HttpRequest req)
    {
        ModeloEditarProyecto model = new ModeloEditarProyecto();
        model.setModel(nombreProyecto, descripcionProyecto);
        int result = model.validarModelo(idProyecto);
        if (result == 1)
        {
            bool res = model.editarProyecto(idProyecto);
            if (res)
            {
                opMsg = "El proyecto fu&eacute; editado correctamente";
                error.Text = "1";
                errorCode = "1";
                dataMsg = "";
                // reflect to readonly property 
                PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);

                // make collection editable 
                isreadonly.SetValue(req.QueryString, false, null);

                // remove 
                req.QueryString.Remove("n");

                // modify 
                req.QueryString.Set("n", nombreProyecto);

                // make collection readonly again 
                isreadonly.SetValue(req.QueryString, true, null);
                return;
            }

            else
            {
                opMsg = "Ocurri&oacute; un error al conectarse con la base de datos. Intente m&aacute;s tarde 22";
                dataMsg = "";
                error.Text = "1";
                errorCode = "";
                b.Enabled = false;
                return;
            }
        }

        else
        {
            if (result == -1)
            {
                opMsg = "El campo nuevo nombre del proyecto tiene como maximo 100 caracteres y no puede ser vacio";
                dataMsg = "";
                error.Text = "1";
                errorCode = "";
                return;
                
            }

            if (result == -2)
            {
                opMsg = "El campo nueva descripci&oacute;n del proyecto tiene como maximo 300 caracteres y no puede ser vacio";
                error.Text = "1";
                errorCode = "";
                return;

            }

            if (result == -3)
            {
                opMsg = "El nuevo nombre del proyecto ya se encuentra en la base de datos.Por favor, seleccione otro";
                error.Text = "1";
                errorCode = "";
                return;
            }

            if (result == -4 || result == -5)
            {
                opMsg = "Ocurri&oacute; un error al conectarse con la base de datos. Intente m&aacute;s tarde 33";
                error.Text = "1";
                errorCode = "";
                b.Enabled = false;
                return;
            }
        
        }
    }
}